This invention relates to software development techniques involving the use of components in a component-based application.
Component-based applications are built from building blocks of software called components. Each component corresponds to a function or set of functions that may be used and reused in different component-based applications. Instead of creating the software applications from scratch, component-based applications are created by combining these existing components, and possibly new components developed specifically for the application. For example, client/server applications can be created using separate components to process information on a server, transmit information from the server over a network to a client, and then interpret or interact with the information on the client. The component-based applications are easier to maintain in part because the components can be developed, analyzed, and tested in individual units.
The components must agree on certain protocols and communicate information to each other in a predetermined manner in the component-based application. Existing infrastructure technologies for object-oriented components to exchange information include Common Object Resource Broker Architecture (CORBA) and Microsoft's Component Object Model (COM) and Distributed Component Object Model (DCOM). Developers use these object-oriented technologies along with customized code to facilitate the communication and collaboration between the components. The object-oriented technologies provide a conduit for passing information between objects locally and over networks. Customized code created by the developers allows the components to gather information about other components and the component-based application being created. In conventional component-based systems, it is this customized code within each component that allows different components to work together.
Unfortunately, it is often difficult to modify one component used in a component-based application without modifying many other components. If the modified component processes information differently, other components that subsequently use the information may also require modification. In some instances, it may take too much development time to modify the many different components in a component-based application. Further, if the developer is an OEM (Original Equipment Manufacturer), the company supplying the components may not want to disclose all the source code to the OEM. The OEM is left with using the components in a component-based application exactly as they are provided or entering into a complex licensing and development contract with the supplying company. This requires the OEMs to work closely with companies supplying component-based applications to develop value-added components that meet the needs of the OEMs product line. Software is not modified without efforts of the company supplying the source-code and the OEMs development team. As a result, value-added enhancements made to existing component-based applications come with long development times and high costs.